package edu.hunau.cxb19.oop.class03;

/**
 * 平面中的点
 * 
 * ctrl+o 查看类的资源信息
 * 
 * @author hb
 *
 *         2020-02-25 14:52:30
 */
public class Point {

	private int x;
	private int y;

	// 提供getter,setter方法
	//alt+s,r
 	public Point() {
		System.out.println("this:" + this);

	}

	/**
	 * @return the x
	 */
	public int getX() {
		return x;
	}

	/**
	 * @param x the x to set
	 */
	public void setX(int x) {
		this.x = x;
	}

	/**
	 * @return the y
	 */
	public int getY() {
		return y;
	}

	/**
	 * @param y the y to set
	 */
	public void setY(int y) {
		this.y = y;
	}

	/**
	 * 有参数的构造器
	 */
	public Point(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public Point(int x) {
		// 表示调用当前类中的参数类型为int,int的构造器
		this(x, x);
	}

	/**
	 * 计算当前点到(x,y)的距离
	 * 
	 * @param x
	 * @param y
	 * @return
	 */
	public double distance(int x, int y) {
		return Math.sqrt((this.x - x) * (this.x - x) + (this.y - y) * (this.y - y));
	}

	public double distance(Point p) {
		// this.distance方法表示调用当前对象中的distance(int,int)方法
		return this.distance(p.x, p.y);
	}

	/**
	 * 计算当前点到原点的距离
	 * 
	 * @return
	 */
	public double distance() {
		return this.distance(0, 0);
	}

}
